home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 1.0 beta / flock-1.0RC3.en-US.win32.exe / flock / components / nsDefaultCLH.js < prev    next >
Text File  |  2007-10-18  |  8KB  |  232 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is the Mozilla Firefox browser.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Benjamin Smedberg <benjamin@smedbergs.us>
  18.  *
  19.  * Portions created by the Initial Developer are Copyright (C) 2004
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *  Daniel Glazman <daniel.glazman@disruptive-innovations.com>
  24.  *
  25.  * Alternatively, the contents of this file may be used under the terms of
  26.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  27.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  28.  * in which case the provisions of the GPL or the LGPL are applicable instead
  29.  * of those above. If you wish to allow use of your version of this file only
  30.  * under the terms of either the GPL or the LGPL, and not to allow others to
  31.  * use your version of this file under the terms of the MPL, indicate your
  32.  * decision by deleting the provisions above and replace them with the notice
  33.  * and other provisions required by the GPL or the LGPL. If you do not delete
  34.  * the provisions above, a recipient may use your version of this file under
  35.  * the terms of any one of the MPL, the GPL or the LGPL.
  36.  *
  37.  * ***** END LICENSE BLOCK ***** */
  38.  
  39. const nsISupports              = Components.interfaces.nsISupports;
  40.  
  41. const nsICategoryManager       = Components.interfaces.nsICategoryManager;
  42. const nsIComponentRegistrar    = Components.interfaces.nsIComponentRegistrar;
  43. const nsICommandLine           = Components.interfaces.nsICommandLine;
  44. const nsICommandLineHandler    = Components.interfaces.nsICommandLineHandler;
  45. const nsIFactory               = Components.interfaces.nsIFactory;
  46. const nsIModule                = Components.interfaces.nsIModule;
  47. const nsIPrefBranch            = Components.interfaces.nsIPrefBranch;
  48. const nsISupportsString        = Components.interfaces.nsISupportsString;
  49. const nsIWindowWatcher         = Components.interfaces.nsIWindowWatcher;
  50. const nsIProperties            = Components.interfaces.nsIProperties;
  51. const nsIFile                  = Components.interfaces.nsIFile;
  52. const nsISimpleEnumerator      = Components.interfaces.nsISimpleEnumerator;
  53.  
  54. /**
  55.  * This file provides a generic default command-line handler.
  56.  *
  57.  * It opens the chrome window specified by the pref "toolkit.defaultChromeURI"
  58.  * with the flags specified by the pref "toolkit.defaultChromeFlags"
  59.  * or "chrome,dialog=no,all" is it is not available.
  60.  * The arguments passed to the window are the nsICommandLine instance.
  61.  *
  62.  * It doesn't do anything if the pref "toolkit.defaultChromeURI" is unset.
  63.  */
  64.  
  65. function getDirectoryService()
  66. {
  67.   return Components.classes["@mozilla.org/file/directory_service;1"]
  68.                    .getService(nsIProperties);
  69. }
  70.  
  71. var nsDefaultCLH = {
  72.   /* nsISupports */
  73.  
  74.   QueryInterface : function clh_QI(iid) {
  75.     if (iid.equals(nsICommandLineHandler) ||
  76.         iid.equals(nsIFactory) ||
  77.         iid.equals(nsISupports))
  78.       return this;
  79.  
  80.     throw Components.results.NS_ERROR_NO_INTERFACE;
  81.   },
  82.  
  83.   /* nsICommandLineHandler */
  84.  
  85.   handle : function clh_handle(cmdLine) {
  86.  
  87.     var printDir;
  88.     while (printDir = cmdLine.handleFlagWithParam("print-xpcom-dir", false)) {
  89.       var out = "print-xpcom-dir(\"" + printDir + "\"): ";
  90.       try {
  91.         out += getDirectoryService().get(printDir, nsIFile).path;
  92.       }
  93.       catch (e) {
  94.         out += "<Not Provided>";
  95.       }
  96.  
  97.       dump(out + "\n");
  98.       Components.utils.reportError(out);
  99.     }
  100.  
  101.     var printDirList;
  102.     while (printDirList = cmdLine.handleFlagWithParam("print-xpcom-dirlist",
  103.                                                       false)) {
  104.       out = "print-xpcom-dirlist(\"" + printDirList + "\"): ";
  105.       try {
  106.         var list = getDirectoryService().get(printDirList,
  107.                                              nsISimpleEnumerator);
  108.         while (list.hasMoreElements())
  109.           out += list.getNext().QueryInterface(nsIFile).path + ";";
  110.       }
  111.       catch (e) {
  112.         out += "<Not Provided>";
  113.       }
  114.  
  115.       dump(out + "\n");
  116.       Components.utils.reportError(out);
  117.     }
  118.  
  119.     if (cmdLine.preventDefault)
  120.       return;
  121.  
  122.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  123.                           .getService(nsIPrefBranch);
  124.  
  125.     try {
  126.       var singletonWindowType = prefs.getCharPref("toolkit.singletonWindowType");
  127.       var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  128.                                      .getService(Components.interfaces.nsIWindowMediator);
  129.       var win = windowMediator.getMostRecentWindow(singletonWindowType);
  130.       if (win) {
  131.         win.focus();
  132.         cmdLine.preventDefault = true;
  133.         return;
  134.       }
  135.     }
  136.     catch (e) { }
  137.  
  138.     // if the pref is missing, ignore the exception 
  139.     try {
  140.       var chromeURI = prefs.getCharPref("toolkit.defaultChromeURI");
  141.  
  142.       var flags = "chrome,dialog=no,all";
  143.       try {
  144.         flags = prefs.getCharPref("toolkit.defaultChromeFeatures");
  145.       }
  146.       catch (e) { }
  147.  
  148.       var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
  149.                             .getService(nsIWindowWatcher);
  150.       wwatch.openWindow(null, chromeURI, "_blank",
  151.                         flags, cmdLine);
  152.     }
  153.     catch (e) { }
  154.   },
  155.  
  156.   helpInfo : "",
  157.  
  158.   /* nsIFactory */
  159.  
  160.   createInstance : function mdh_CI(outer, iid) {
  161.     if (outer != null)
  162.       throw Components.results.NS_ERROR_NO_AGGREGATION;
  163.  
  164.     return this.QueryInterface(iid);
  165.   },
  166.  
  167.   lockFactory : function mdh_lock(lock) {
  168.     /* no-op */
  169.   }
  170. };
  171.  
  172. const clh_contractID = "@mozilla.org/toolkit/default-clh;1";
  173. const clh_CID = Components.ID("{6ebc941a-f2ff-4d56-b3b6-f7d0b9d73344}");
  174.  
  175. var Module = {
  176.   /* nsISupports */
  177.  
  178.   QueryInterface : function mod_QI(iid) {
  179.     if (iid.equals(nsIModule) ||
  180.         iid.equals(nsISupports))
  181.       return this;
  182.  
  183.     throw Components.results.NS_ERROR_NO_INTERFACE;
  184.   },
  185.  
  186.   /* nsIModule */
  187.  
  188.   getClassObject : function mod_gch(compMgr, cid, iid) {
  189.     if (cid.equals(clh_CID))
  190.       return nsDefaultCLH.QueryInterface(iid);
  191.  
  192.     throw components.results.NS_ERROR_FAILURE;
  193.   },
  194.  
  195.   registerSelf : function mod_regself(compMgr, fileSpec, location, type) {
  196.     var compReg = compMgr.QueryInterface(nsIComponentRegistrar);
  197.  
  198.     compReg.registerFactoryLocation(clh_CID,
  199.                                     "nsDefaultCLH",
  200.                                     clh_contractID,
  201.                                     fileSpec,
  202.                                     location,
  203.                                     type);
  204.  
  205.     var catMan = Components.classes["@mozilla.org/categorymanager;1"]
  206.                            .getService(nsICategoryManager);
  207.  
  208.     catMan.addCategoryEntry("command-line-handler",
  209.                             "y-default",
  210.                             clh_contractID, true, true);
  211.   },
  212.  
  213.   unregisterSelf : function mod_unreg(compMgr, location, type) {
  214.     var compReg = compMgr.QueryInterface(nsIComponentRegistrar);
  215.     compReg.unregisterFactoryLocation(clh_CID, location);
  216.  
  217.     var catMan = Components.classes["@mozilla.org/categorymanager;1"]
  218.                            .getService(nsICategoryManager);
  219.  
  220.     catMan.deleteCategoryEntry("command-line-handler",
  221.                                "y-default");
  222.   },
  223.  
  224.   canUnload : function (compMgr) {
  225.     return true;
  226.   }
  227. };
  228.  
  229. function NSGetModule(compMgr, fileSpec) {
  230.   return Module;
  231. }
  232.